Useful functions

library(tidyverse)

methods.color <- setNames(scales::hue_pal()(6), 
                          c("logit-simple", "PRS-max", "PRS-stringent",
                            "T-Trees", "logit-triple", "PRS-all")) 
format_results <- function(results) {
  results %>%
    as_tibble() %>%
    mutate(
      par.causal = factor(map_chr(par.causal, ~paste(.x[1], .x[2], sep = " in ")),
                          levels = c("30 in HLA", paste(3 * 10^(1:3), "in all"))),
      AUC = map_dbl(eval, ~bigstatsr::AUC(.x[, 1], .x[, 2]))
    )
}
boot <- function(x, n = 1e4, f = mean) {
  sd(replicate(n, f(sample(x, replace = TRUE))))
}
myggplot <- function(..., coeff = 1) {
  bigstatsr:::MY_THEME(ggplot(...), coeff = coeff) +
  theme(strip.text.x = element_text(size = rel(2)),
        strip.text.y = element_text(size = rel(2)))
} 
barplot_causal <- function(results, h2) {
  
  results %>%
    myggplot(aes(par.causal, AUC_mean, fill = method, color = method)) +
    geom_hline(yintercept = 0.5, linetype = 2) +
    geom_bar(stat = "identity", alpha = 0.3, position = position_dodge()) +
    geom_errorbar(aes(ymin = AUC_mean - 2 * AUC_boot, ymax = AUC_mean + 2 * AUC_boot),
                  position = position_dodge(width = 0.9), color = "black", width = 0.2) + 
    scale_y_continuous(limits = c(0.5, NA), minor_breaks = 0:20 / 20,
                       oob = scales::rescale_none) +
    labs(x = "Causal SNPs (number and location)", y = "Mean of 100 AUCs",
         fill = "Method", color = "Method") +
    scale_fill_manual(values = methods.color) +
    scale_color_manual(values = methods.color)
}

barplot_causal_one <- function(results, h2) {
  
  auc_max <- `if`(h2 == 0.8, 0.94, 0.84)
  
  results %>%
    filter(par.h2 == h2) %>%
    barplot_causal() +
    geom_hline(yintercept = auc_max, linetype = 3, color = "blue") +
    facet_grid(par.dist ~ .)
}

barplot_causal_all <- function(results) {
  
  results %>%
    barplot_causal() +
    geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
               data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
    facet_grid(par.dist ~ par.h2)
}
compare_logit <- function(results, with_method) {
  
  results <- filter(
    results, method %in% c("logit-simple", with_method), par.h2 == 0.8)
  
  results.summary <- results %>%
    group_by_at(c(vars(starts_with("par")), "method")) %>%
    summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
    print(n = Inf)
  
  nsimu <- results.summary$N[[1]]
  stopifnot(all(results.summary$N == nsimu))
  
  plot_extra <- function(y, ylab = y) {
    
    results %>%
      myggplot() +
      geom_boxplot(aes_string("par.causal", y, color = "method", 
                              fill = "method"), alpha = 0.3) + 
      theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
      facet_grid(par.model ~ par.dist) +
      labs(x = "Causal SNPs (number and location)", y = ylab, 
           fill = "Method", color = "Method") +
      theme(legend.position = "none") +
      scale_fill_manual(values = methods.color) +
      scale_color_manual(values = methods.color) +
      scale_y_continuous(limits = c(0, NA))
  }
  
  p1 <- results.summary %>%
    barplot_causal_one(h2 = 0.8) +
    facet_grid(par.model ~ par.dist) +
    labs(y = sprintf("Mean of %d AUCs", nsimu))
  
  p2 <- cowplot::plot_grid(
    plot_extra("nb.preds", "Number of predictors"),
    plot_extra("timing", "Execution time (in seconds)"),
    ncol = 1, align = "hv", scale = 0.95, 
    labels = LETTERS[2:3], label_size = 15
  )
  
  p12 <- cowplot::plot_grid(
    p1 + theme(legend.position = "none"), p2, 
    ncol = 2, scale = 0.95, rel_widths = c(6, 4), 
    labels = c("A", ""), label_size = 15
  )
  
  cowplot::plot_grid(
    cowplot::get_legend(p1 + theme(legend.direction = "horizontal")), p12, 
    rel_heights = c(0.1, 1), ncol = 1
  )
}

Results with T-Trees

results1 <- list.files("results1", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()
compare_logit(results1, with_method = "T-Trees")
## # A tibble: 32 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##     par.causal par.dist par.h2 par.model       method  AUC_mean    AUC_boot     N
##         <fctr>    <chr>  <dbl>     <chr>        <chr>     <dbl>       <dbl> <int>
##  1   30 in HLA gaussian    0.8     fancy logit-simple 0.9001502 0.005041356     5
##  2   30 in HLA gaussian    0.8     fancy      T-Trees 0.8177493 0.001804819     5
##  3   30 in HLA gaussian    0.8    simple logit-simple 0.9424040 0.002020379     5
##  4   30 in HLA gaussian    0.8    simple      T-Trees 0.8347770 0.011158842     5
##  5   30 in HLA  laplace    0.8     fancy logit-simple 0.9008663 0.002036439     5
##  6   30 in HLA  laplace    0.8     fancy      T-Trees 0.8607568 0.008726435     5
##  7   30 in HLA  laplace    0.8    simple logit-simple 0.9302174 0.003306620     5
##  8   30 in HLA  laplace    0.8    simple      T-Trees 0.8481380 0.008021937     5
##  9   30 in all gaussian    0.8     fancy logit-simple 0.8775273 0.007377715     5
## 10   30 in all gaussian    0.8     fancy      T-Trees 0.8502545 0.004755569     5
## 11   30 in all gaussian    0.8    simple logit-simple 0.9323514 0.003096330     5
## 12   30 in all gaussian    0.8    simple      T-Trees 0.8310516 0.012712039     5
## 13   30 in all  laplace    0.8     fancy logit-simple 0.8932313 0.005663724     5
## 14   30 in all  laplace    0.8     fancy      T-Trees 0.8457449 0.011024057     5
## 15   30 in all  laplace    0.8    simple logit-simple 0.9249049 0.004047868     5
## 16   30 in all  laplace    0.8    simple      T-Trees 0.8322151 0.008033911     5
## 17  300 in all gaussian    0.8     fancy logit-simple 0.7796750 0.003820701     5
## 18  300 in all gaussian    0.8     fancy      T-Trees 0.6265848 0.010293201     5
## 19  300 in all gaussian    0.8    simple logit-simple 0.8527230 0.002981079     5
## 20  300 in all gaussian    0.8    simple      T-Trees 0.6003698 0.012979123     5
## 21  300 in all  laplace    0.8     fancy logit-simple 0.8259872 0.010084348     5
## 22  300 in all  laplace    0.8     fancy      T-Trees 0.7020579 0.005743821     5
## 23  300 in all  laplace    0.8    simple logit-simple 0.8604749 0.002830282     5
## 24  300 in all  laplace    0.8    simple      T-Trees 0.6535618 0.019026523     5
## 25 3000 in all gaussian    0.8     fancy logit-simple 0.5738792 0.009238726     5
## 26 3000 in all gaussian    0.8     fancy      T-Trees 0.5067176 0.003820574     5
## 27 3000 in all gaussian    0.8    simple logit-simple 0.5906757 0.007425038     5
## 28 3000 in all gaussian    0.8    simple      T-Trees 0.5118337 0.008794708     5
## 29 3000 in all  laplace    0.8     fancy logit-simple 0.6326039 0.003947736     5
## 30 3000 in all  laplace    0.8     fancy      T-Trees 0.5151644 0.006656163     5
## 31 3000 in all  laplace    0.8    simple logit-simple 0.6329355 0.006442185     5
## 32 3000 in all  laplace    0.8    simple      T-Trees 0.5019465 0.007255742     5

ggsave("figures/supp-ttrees.pdf", scale = 1/90, width = 1400, height = 1060)

Results with logit-triple & model fancy

results2 <- list.files("results2", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results2.summary <- results2 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf) 
## # A tibble: 160 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##      par.causal par.dist par.h2 par.model        method  AUC_mean    AUC_boot     N
##          <fctr>    <chr>  <dbl>     <chr>         <chr>     <dbl>       <dbl> <int>
##   1   30 in HLA gaussian    0.5     fancy  logit-simple 0.7792825 0.006778978    20
##   2   30 in HLA gaussian    0.5     fancy  logit-triple 0.8098024 0.003979523    20
##   3   30 in HLA gaussian    0.5     fancy       PRS-all 0.6107352 0.009057463    20
##   4   30 in HLA gaussian    0.5     fancy       PRS-max 0.7295867 0.006131200    20
##   5   30 in HLA gaussian    0.5     fancy PRS-stringent 0.7201397 0.006390265    20
##   6   30 in HLA gaussian    0.5    simple  logit-simple 0.8172830 0.003615811    20
##   7   30 in HLA gaussian    0.5    simple  logit-triple 0.8153947 0.003672790    20
##   8   30 in HLA gaussian    0.5    simple       PRS-all 0.6240243 0.004887050    20
##   9   30 in HLA gaussian    0.5    simple       PRS-max 0.7507277 0.004054041    20
##  10   30 in HLA gaussian    0.5    simple PRS-stringent 0.7393806 0.004303672    20
##  11   30 in HLA gaussian    0.8     fancy  logit-simple 0.8740717 0.005432324    20
##  12   30 in HLA gaussian    0.8     fancy  logit-triple 0.9125343 0.002692576    20
##  13   30 in HLA gaussian    0.8     fancy       PRS-all 0.6513709 0.006035204    20
##  14   30 in HLA gaussian    0.8     fancy       PRS-max 0.8083270 0.006839761    20
##  15   30 in HLA gaussian    0.8     fancy PRS-stringent 0.7844375 0.007499301    20
##  16   30 in HLA gaussian    0.8    simple  logit-simple 0.9290304 0.001716271    20
##  17   30 in HLA gaussian    0.8    simple  logit-triple 0.9271774 0.001897093    20
##  18   30 in HLA gaussian    0.8    simple       PRS-all 0.6762255 0.006897652    20
##  19   30 in HLA gaussian    0.8    simple       PRS-max 0.8393841 0.004912664    20
##  20   30 in HLA gaussian    0.8    simple PRS-stringent 0.8187984 0.005186202    20
##  21   30 in HLA  laplace    0.5     fancy  logit-simple 0.7802401 0.007486053    20
##  22   30 in HLA  laplace    0.5     fancy  logit-triple 0.8074561 0.005355471    20
##  23   30 in HLA  laplace    0.5     fancy       PRS-all 0.6027719 0.007540163    20
##  24   30 in HLA  laplace    0.5     fancy       PRS-max 0.7405677 0.006879035    20
##  25   30 in HLA  laplace    0.5     fancy PRS-stringent 0.7246475 0.007715123    20
##  26   30 in HLA  laplace    0.5    simple  logit-simple 0.8274996 0.003307451    20
##  27   30 in HLA  laplace    0.5    simple  logit-triple 0.8259934 0.003224903    20
##  28   30 in HLA  laplace    0.5    simple       PRS-all 0.6350365 0.007689262    20
##  29   30 in HLA  laplace    0.5    simple       PRS-max 0.7672153 0.005478210    20
##  30   30 in HLA  laplace    0.5    simple PRS-stringent 0.7459086 0.004849171    20
##  31   30 in HLA  laplace    0.8     fancy  logit-simple 0.8764534 0.007351322    20
##  32   30 in HLA  laplace    0.8     fancy  logit-triple 0.9130184 0.003926679    20
##  33   30 in HLA  laplace    0.8     fancy       PRS-all 0.6605867 0.010342641    20
##  34   30 in HLA  laplace    0.8     fancy       PRS-max 0.8083362 0.007955574    20
##  35   30 in HLA  laplace    0.8     fancy PRS-stringent 0.7903932 0.007956842    20
##  36   30 in HLA  laplace    0.8    simple  logit-simple 0.9245156 0.001666259    20
##  37   30 in HLA  laplace    0.8    simple  logit-triple 0.9227552 0.001692203    20
##  38   30 in HLA  laplace    0.8    simple       PRS-all 0.6784411 0.007218417    20
##  39   30 in HLA  laplace    0.8    simple       PRS-max 0.8305316 0.004587807    20
##  40   30 in HLA  laplace    0.8    simple PRS-stringent 0.8109338 0.005503477    20
##  41   30 in all gaussian    0.5     fancy  logit-simple 0.7856238 0.003871153    20
##  42   30 in all gaussian    0.5     fancy  logit-triple 0.8119871 0.002939101    20
##  43   30 in all gaussian    0.5     fancy       PRS-all 0.5459307 0.004616631    20
##  44   30 in all gaussian    0.5     fancy       PRS-max 0.7712284 0.003735600    20
##  45   30 in all gaussian    0.5     fancy PRS-stringent 0.7594907 0.003972811    20
##  46   30 in all gaussian    0.5    simple  logit-simple 0.8207275 0.003070008    20
##  47   30 in all gaussian    0.5    simple  logit-triple 0.8185525 0.003198831    20
##  48   30 in all gaussian    0.5    simple       PRS-all 0.5478161 0.005387027    20
##  49   30 in all gaussian    0.5    simple       PRS-max 0.8017361 0.003987937    20
##  50   30 in all gaussian    0.5    simple PRS-stringent 0.7926147 0.004369573    20
##  51   30 in all gaussian    0.8     fancy  logit-simple 0.8791372 0.004975668    20
##  52   30 in all gaussian    0.8     fancy  logit-triple 0.9182189 0.003026337    20
##  53   30 in all gaussian    0.8     fancy       PRS-all 0.5748752 0.004103763    20
##  54   30 in all gaussian    0.8     fancy       PRS-max 0.8510274 0.005609587    20
##  55   30 in all gaussian    0.8     fancy PRS-stringent 0.8414967 0.005965623    20
##  56   30 in all gaussian    0.8    simple  logit-simple 0.9321940 0.001189364    20
##  57   30 in all gaussian    0.8    simple  logit-triple 0.9301498 0.001120639    20
##  58   30 in all gaussian    0.8    simple       PRS-all 0.5798320 0.003246764    20
##  59   30 in all gaussian    0.8    simple       PRS-max 0.9018355 0.002665063    20
##  60   30 in all gaussian    0.8    simple PRS-stringent 0.8862639 0.004053661    20
##  61   30 in all  laplace    0.5     fancy  logit-simple 0.7901588 0.007054740    20
##  62   30 in all  laplace    0.5     fancy  logit-triple 0.8203553 0.004402233    20
##  63   30 in all  laplace    0.5     fancy       PRS-all 0.5433082 0.004138373    20
##  64   30 in all  laplace    0.5     fancy       PRS-max 0.7730957 0.006481720    20
##  65   30 in all  laplace    0.5     fancy PRS-stringent 0.7641409 0.006153876    20
##  66   30 in all  laplace    0.5    simple  logit-simple 0.8289256 0.002783593    20
##  67   30 in all  laplace    0.5    simple  logit-triple 0.8271722 0.002842897    20
##  68   30 in all  laplace    0.5    simple       PRS-all 0.5538776 0.005020918    20
##  69   30 in all  laplace    0.5    simple       PRS-max 0.8084505 0.003843437    20
##  70   30 in all  laplace    0.5    simple PRS-stringent 0.8012329 0.004246384    20
##  71   30 in all  laplace    0.8     fancy  logit-simple 0.8804520 0.005856453    20
##  72   30 in all  laplace    0.8     fancy  logit-triple 0.9138281 0.002935565    20
##  73   30 in all  laplace    0.8     fancy       PRS-all 0.5713455 0.004407756    20
##  74   30 in all  laplace    0.8     fancy       PRS-max 0.8508758 0.005903180    20
##  75   30 in all  laplace    0.8     fancy PRS-stringent 0.8404317 0.005546405    20
##  76   30 in all  laplace    0.8    simple  logit-simple 0.9338724 0.001940969    20
##  77   30 in all  laplace    0.8    simple  logit-triple 0.9326753 0.001970573    20
##  78   30 in all  laplace    0.8    simple       PRS-all 0.5834028 0.004155418    20
##  79   30 in all  laplace    0.8    simple       PRS-max 0.8969192 0.003142310    20
##  80   30 in all  laplace    0.8    simple PRS-stringent 0.8880271 0.003051308    20
##  81  300 in all gaussian    0.5     fancy  logit-simple 0.6688824 0.005159284    20
##  82  300 in all gaussian    0.5     fancy  logit-triple 0.6922540 0.005523752    20
##  83  300 in all gaussian    0.5     fancy       PRS-all 0.5433089 0.003610694    20
##  84  300 in all gaussian    0.5     fancy       PRS-max 0.6581923 0.003925418    20
##  85  300 in all gaussian    0.5     fancy PRS-stringent 0.6172959 0.005649455    20
##  86  300 in all gaussian    0.5    simple  logit-simple 0.7084752 0.005775482    20
##  87  300 in all gaussian    0.5    simple  logit-triple 0.6968002 0.005735037    20
##  88  300 in all gaussian    0.5    simple       PRS-all 0.5597247 0.003915466    20
##  89  300 in all gaussian    0.5    simple       PRS-max 0.6918472 0.005366092    20
##  90  300 in all gaussian    0.5    simple PRS-stringent 0.6415031 0.005942902    20
##  91  300 in all gaussian    0.8     fancy  logit-simple 0.7900459 0.004732309    20
##  92  300 in all gaussian    0.8     fancy  logit-triple 0.8281346 0.003686055    20
##  93  300 in all gaussian    0.8     fancy       PRS-all 0.5668535 0.003698994    20
##  94  300 in all gaussian    0.8     fancy       PRS-max 0.7611189 0.004175000    20
##  95  300 in all gaussian    0.8     fancy PRS-stringent 0.7203422 0.007456779    20
##  96  300 in all gaussian    0.8    simple  logit-simple 0.8524128 0.002258264    20
##  97  300 in all gaussian    0.8    simple  logit-triple 0.8385568 0.002553361    20
##  98  300 in all gaussian    0.8    simple       PRS-all 0.5875894 0.004304055    20
##  99  300 in all gaussian    0.8    simple       PRS-max 0.8058507 0.002767798    20
## 100  300 in all gaussian    0.8    simple PRS-stringent 0.7564311 0.004179996    20
## 101  300 in all  laplace    0.5     fancy  logit-simple 0.7106360 0.005411390    20
## 102  300 in all  laplace    0.5     fancy  logit-triple 0.7300707 0.004683354    20
## 103  300 in all  laplace    0.5     fancy       PRS-all 0.5490041 0.003681072    20
## 104  300 in all  laplace    0.5     fancy       PRS-max 0.7007527 0.005620689    20
## 105  300 in all  laplace    0.5     fancy PRS-stringent 0.6791602 0.006789518    20
## 106  300 in all  laplace    0.5    simple  logit-simple 0.7447200 0.004255033    20
## 107  300 in all  laplace    0.5    simple  logit-triple 0.7335065 0.004290544    20
## 108  300 in all  laplace    0.5    simple       PRS-all 0.5560735 0.003566632    20
## 109  300 in all  laplace    0.5    simple       PRS-max 0.7286772 0.004970907    20
## 110  300 in all  laplace    0.5    simple PRS-stringent 0.6919212 0.004713797    20
## 111  300 in all  laplace    0.8     fancy  logit-simple 0.8061571 0.004847395    20
## 112  300 in all  laplace    0.8     fancy  logit-triple 0.8496283 0.003253838    20
## 113  300 in all  laplace    0.8     fancy       PRS-all 0.5590664 0.004376088    20
## 114  300 in all  laplace    0.8     fancy       PRS-max 0.7804064 0.004807278    20
## 115  300 in all  laplace    0.8     fancy PRS-stringent 0.7587236 0.004878284    20
## 116  300 in all  laplace    0.8    simple  logit-simple 0.8663792 0.002205039    20
## 117  300 in all  laplace    0.8    simple  logit-triple 0.8551435 0.002564611    20
## 118  300 in all  laplace    0.8    simple       PRS-all 0.5848090 0.002632504    20
## 119  300 in all  laplace    0.8    simple       PRS-max 0.8213986 0.005594285    20
## 120  300 in all  laplace    0.8    simple PRS-stringent 0.7929856 0.005743121    20
## 121 3000 in all gaussian    0.5     fancy  logit-simple 0.5236621 0.004913812    20
## 122 3000 in all gaussian    0.5     fancy  logit-triple 0.5242958 0.004686909    20
## 123 3000 in all gaussian    0.5     fancy       PRS-all 0.5331167 0.004263489    20
## 124 3000 in all gaussian    0.5     fancy       PRS-max 0.5518667 0.003077550    20
## 125 3000 in all gaussian    0.5     fancy PRS-stringent 0.5000000 0.000000000    20
## 126 3000 in all gaussian    0.5    simple  logit-simple 0.5423966 0.004522266    20
## 127 3000 in all gaussian    0.5    simple  logit-triple 0.5354326 0.004948788    20
## 128 3000 in all gaussian    0.5    simple       PRS-all 0.5474403 0.004105793    20
## 129 3000 in all gaussian    0.5    simple       PRS-max 0.5648709 0.003558725    20
## 130 3000 in all gaussian    0.5    simple PRS-stringent 0.5020973 0.001415433    20
## 131 3000 in all gaussian    0.8     fancy  logit-simple 0.5737183 0.004469151    20
## 132 3000 in all gaussian    0.8     fancy  logit-triple 0.5691679 0.004940755    20
## 133 3000 in all gaussian    0.8     fancy       PRS-all 0.5566300 0.005059745    20
## 134 3000 in all gaussian    0.8     fancy       PRS-max 0.5821464 0.003584739    20
## 135 3000 in all gaussian    0.8     fancy PRS-stringent 0.5042297 0.002626359    20
## 136 3000 in all gaussian    0.8    simple  logit-simple 0.5875772 0.004307471    20
## 137 3000 in all gaussian    0.8    simple  logit-triple 0.5723997 0.003924531    20
## 138 3000 in all gaussian    0.8    simple       PRS-all 0.5819342 0.004482918    20
## 139 3000 in all gaussian    0.8    simple       PRS-max 0.5972854 0.003425626    20
## 140 3000 in all gaussian    0.8    simple PRS-stringent 0.5026332 0.002052428    20
## 141 3000 in all  laplace    0.5     fancy  logit-simple 0.5556580 0.004531955    20
## 142 3000 in all  laplace    0.5     fancy  logit-triple 0.5564935 0.005122790    20
## 143 3000 in all  laplace    0.5     fancy       PRS-all 0.5404193 0.004245429    20
## 144 3000 in all  laplace    0.5     fancy       PRS-max 0.5703121 0.003854990    20
## 145 3000 in all  laplace    0.5     fancy PRS-stringent 0.5264433 0.005826008    20
## 146 3000 in all  laplace    0.5    simple  logit-simple 0.5701644 0.005113616    20
## 147 3000 in all  laplace    0.5    simple  logit-triple 0.5638845 0.004680081    20
## 148 3000 in all  laplace    0.5    simple       PRS-all 0.5604324 0.005171089    20
## 149 3000 in all  laplace    0.5    simple       PRS-max 0.5821935 0.003552123    20
## 150 3000 in all  laplace    0.5    simple PRS-stringent 0.5149187 0.004375803    20
## 151 3000 in all  laplace    0.8     fancy  logit-simple 0.6168390 0.004040020    20
## 152 3000 in all  laplace    0.8     fancy  logit-triple 0.6178760 0.004285434    20
## 153 3000 in all  laplace    0.8     fancy       PRS-all 0.5619015 0.005535427    20
## 154 3000 in all  laplace    0.8     fancy       PRS-max 0.6088659 0.003100672    20
## 155 3000 in all  laplace    0.8     fancy PRS-stringent 0.5426294 0.007598108    20
## 156 3000 in all  laplace    0.8    simple  logit-simple 0.6478068 0.005216577    20
## 157 3000 in all  laplace    0.8    simple  logit-triple 0.6250480 0.004822444    20
## 158 3000 in all  laplace    0.8    simple       PRS-all 0.5779923 0.003872393    20
## 159 3000 in all  laplace    0.8    simple       PRS-max 0.6259128 0.004952222    20
## 160 3000 in all  laplace    0.8    simple PRS-stringent 0.5501769 0.006717548    20

Results with logit-triple

compare_logit(bind_rows(results1, results2), with_method = "logit-triple")
## # A tibble: 32 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##     par.causal par.dist par.h2 par.model       method  AUC_mean    AUC_boot     N
##         <fctr>    <chr>  <dbl>     <chr>        <chr>     <dbl>       <dbl> <int>
##  1   30 in HLA gaussian    0.8     fancy logit-simple 0.8792874 0.004896725    25
##  2   30 in HLA gaussian    0.8     fancy logit-triple 0.9141385 0.002356405    25
##  3   30 in HLA gaussian    0.8    simple logit-simple 0.9317051 0.001797435    25
##  4   30 in HLA gaussian    0.8    simple logit-triple 0.9297347 0.001887540    25
##  5   30 in HLA  laplace    0.8     fancy logit-simple 0.8813360 0.006223119    25
##  6   30 in HLA  laplace    0.8     fancy logit-triple 0.9154816 0.003318952    25
##  7   30 in HLA  laplace    0.8    simple logit-simple 0.9256559 0.001552867    25
##  8   30 in HLA  laplace    0.8    simple logit-triple 0.9240276 0.001611596    25
##  9   30 in all gaussian    0.8     fancy logit-simple 0.8788152 0.004214520    25
## 10   30 in all gaussian    0.8     fancy logit-triple 0.9185858 0.002552037    25
## 11   30 in all gaussian    0.8    simple logit-simple 0.9322255 0.001127066    25
## 12   30 in all gaussian    0.8    simple logit-triple 0.9303623 0.001134216    25
## 13   30 in all  laplace    0.8     fancy logit-simple 0.8830078 0.004880809    25
## 14   30 in all  laplace    0.8     fancy logit-triple 0.9158081 0.002808075    25
## 15   30 in all  laplace    0.8    simple logit-simple 0.9320789 0.001886848    25
## 16   30 in all  laplace    0.8    simple logit-triple 0.9308360 0.001925656    25
## 17  300 in all gaussian    0.8     fancy logit-simple 0.7879717 0.003927808    25
## 18  300 in all gaussian    0.8     fancy logit-triple 0.8285485 0.002989142    25
## 19  300 in all gaussian    0.8    simple logit-simple 0.8524748 0.001917118    25
## 20  300 in all gaussian    0.8    simple logit-triple 0.8387199 0.002109776    25
## 21  300 in all  laplace    0.8     fancy logit-simple 0.8101231 0.004691287    25
## 22  300 in all  laplace    0.8     fancy logit-triple 0.8508580 0.003105004    25
## 23  300 in all  laplace    0.8    simple logit-simple 0.8651983 0.001887679    25
## 24  300 in all  laplace    0.8    simple logit-triple 0.8539370 0.002202519    25
## 25 3000 in all gaussian    0.8     fancy logit-simple 0.5737505 0.004042915    25
## 26 3000 in all gaussian    0.8     fancy logit-triple 0.5712562 0.004447283    25
## 27 3000 in all gaussian    0.8    simple logit-simple 0.5881969 0.003769228    25
## 28 3000 in all gaussian    0.8    simple logit-triple 0.5724451 0.003337235    25
## 29 3000 in all  laplace    0.8     fancy logit-simple 0.6199920 0.003563718    25
## 30 3000 in all  laplace    0.8     fancy logit-triple 0.6193114 0.003500581    25
## 31 3000 in all  laplace    0.8    simple logit-simple 0.6448325 0.004498131    25
## 32 3000 in all  laplace    0.8    simple logit-triple 0.6226916 0.004170522    25

ggsave("figures/supp-triple.pdf", scale = 1/90, width = 1400, height = 1060)
results2.summary %>%
  filter(grepl("logit", method)) %>%
  barplot_causal_one(h2 = 0.5) +
  facet_grid(par.dist ~ par.model) +
  labs(y = "Mean of 20 AUCs")

ggsave("figures/supp-AUC-triple.pdf", scale = 1/90, width = 1242, height = 951)

Results with model fancy

results2.summary %>%
  filter(par.model == "fancy", method %in% c("logit-simple", "PRS-max")) %>%
  barplot_causal_all() +
  labs(y = "Mean of 20 AUCs")

ggsave("figures/supp-AUC-logit-fancy.pdf", scale = 1/90, width = 1242, height = 951)
results2.summary %>%
  filter(par.model == "fancy", grepl("PRS", method)) %>%
  barplot_causal_all() +
  labs(y = "Mean of 20 AUCs")

ggsave("figures/supp-AUC-PRS-fancy.pdf", scale = 1/90, width = 1242, height = 951)

Results with only logit-simple & PRSs

Correlation between predictive measures

results3 <- list.files(paste0("results", 2:3), full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  filter(method != "logit-triple", par.model != "fancy") %>%
  format_results()

results3_corr <- results3 %>%
  filter(method %in% c("logit-simple", "PRS-max")) %>%
  mutate(
    percCases10 = map_dbl(eval, ~mean(.x[order(.x[, 1], decreasing = TRUE)[1:110], 2])),
    percCases20 = map_dbl(eval, ~mean(.x[order(.x[, 1], decreasing = TRUE)[1:220], 2])),
    Parameters  = interaction(paste("h2 =", par.h2), par.dist, method, sep = " | ")
  )
p1 <- results3_corr %>%
  myggplot(aes(AUC, percCases10, color = Parameters)) + 
  geom_point(size = 0.6, alpha = 0.5) +
  geom_smooth(aes(linetype = Parameters), method = "lm", se = FALSE, size = 2) +
  theme(legend.key.width = unit(3.5, "line"), 
        legend.direction = "horizontal") + 
  labs(y = "Proportion of cases among top 10% scores")
p2 <- results3_corr %>%
  myggplot(aes(AUC, percCases20, color = Parameters)) + 
  geom_point(size = 0.6, alpha = 0.5) +
  geom_smooth(aes(linetype = Parameters), method = "lm", se = FALSE, size = 2) + 
  labs(y = "Proportion of cases among top 20% scores") +
  theme(legend.position = "none")

cowplot::plot_grid(p1 + theme(legend.position = "none"), p2 , 
                   ncol = 2, align = "hv", scale = 0.95) %>%
  cowplot::plot_grid(cowplot::get_legend(p1), ., rel_heights = c(0.1, 1), ncol = 1)

ggsave("figures/supp-AUC-corr.pdf", scale = 1/90, width = 1558, height = 737)

with(results3_corr, cor(AUC, percCases10))
## [1] 0.9820442
with(results3_corr, cor(AUC, percCases20))
## [1] 0.9844871

6000 in training & all chromosomes

results3.summary <- results3 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 64 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##     par.causal par.dist par.h2 par.model        method  AUC_mean     AUC_boot     N
##         <fctr>    <chr>  <dbl>     <chr>         <chr>     <dbl>        <dbl> <int>
##  1   30 in HLA gaussian    0.5    simple  logit-simple 0.8215138 0.0016053399   100
##  2   30 in HLA gaussian    0.5    simple       PRS-all 0.6208354 0.0031314069   100
##  3   30 in HLA gaussian    0.5    simple       PRS-max 0.7581877 0.0020773411   100
##  4   30 in HLA gaussian    0.5    simple PRS-stringent 0.7444115 0.0022009356   100
##  5   30 in HLA gaussian    0.8    simple  logit-simple 0.9270953 0.0008874270   100
##  6   30 in HLA gaussian    0.8    simple       PRS-all 0.6858963 0.0041035020   100
##  7   30 in HLA gaussian    0.8    simple       PRS-max 0.8335420 0.0023295339   100
##  8   30 in HLA gaussian    0.8    simple PRS-stringent 0.8187655 0.0024992544   100
##  9   30 in HLA  laplace    0.5    simple  logit-simple 0.8228045 0.0015293463   100
## 10   30 in HLA  laplace    0.5    simple       PRS-all 0.6245922 0.0036957717   100
## 11   30 in HLA  laplace    0.5    simple       PRS-max 0.7683690 0.0021796287   100
## 12   30 in HLA  laplace    0.5    simple PRS-stringent 0.7492045 0.0021834399   100
## 13   30 in HLA  laplace    0.8    simple  logit-simple 0.9260258 0.0010844696   100
## 14   30 in HLA  laplace    0.8    simple       PRS-all 0.6862192 0.0040496376   100
## 15   30 in HLA  laplace    0.8    simple       PRS-max 0.8360309 0.0027234452   100
## 16   30 in HLA  laplace    0.8    simple PRS-stringent 0.8164376 0.0028045831   100
## 17   30 in all gaussian    0.5    simple  logit-simple 0.8236327 0.0012807177   100
## 18   30 in all gaussian    0.5    simple       PRS-all 0.5501103 0.0018974387   100
## 19   30 in all gaussian    0.5    simple       PRS-max 0.8047386 0.0018212419   100
## 20   30 in all gaussian    0.5    simple PRS-stringent 0.7953069 0.0021942729   100
## 21   30 in all gaussian    0.8    simple  logit-simple 0.9331065 0.0007988324   100
## 22   30 in all gaussian    0.8    simple       PRS-all 0.5834275 0.0018878495   100
## 23   30 in all gaussian    0.8    simple       PRS-max 0.9015985 0.0013956528   100
## 24   30 in all gaussian    0.8    simple PRS-stringent 0.8893346 0.0016633767   100
## 25   30 in all  laplace    0.5    simple  logit-simple 0.8256319 0.0013254522   100
## 26   30 in all  laplace    0.5    simple       PRS-all 0.5535134 0.0020862088   100
## 27   30 in all  laplace    0.5    simple       PRS-max 0.8037359 0.0016964876   100
## 28   30 in all  laplace    0.5    simple PRS-stringent 0.7950288 0.0017785160   100
## 29   30 in all  laplace    0.8    simple  logit-simple 0.9321861 0.0009127198   100
## 30   30 in all  laplace    0.8    simple       PRS-all 0.5826541 0.0019706939   100
## 31   30 in all  laplace    0.8    simple       PRS-max 0.8946384 0.0017944974   100
## 32   30 in all  laplace    0.8    simple PRS-stringent 0.8840427 0.0017068184   100
## 33  300 in all gaussian    0.5    simple  logit-simple 0.7130403 0.0020282967   100
## 34  300 in all gaussian    0.5    simple       PRS-all 0.5555424 0.0019238573   100
## 35  300 in all gaussian    0.5    simple       PRS-max 0.6935772 0.0021700631   100
## 36  300 in all gaussian    0.5    simple PRS-stringent 0.6365745 0.0031220920   100
## 37  300 in all gaussian    0.8    simple  logit-simple 0.8470890 0.0012437153   100
## 38  300 in all gaussian    0.8    simple       PRS-all 0.5823561 0.0018676582   100
## 39  300 in all gaussian    0.8    simple       PRS-max 0.8052640 0.0015719898   100
## 40  300 in all gaussian    0.8    simple PRS-stringent 0.7483761 0.0021253285   100
## 41  300 in all  laplace    0.5    simple  logit-simple 0.7497129 0.0018264285   100
## 42  300 in all  laplace    0.5    simple       PRS-all 0.5498312 0.0017311727   100
## 43  300 in all  laplace    0.5    simple       PRS-max 0.7342035 0.0019753855   100
## 44  300 in all  laplace    0.5    simple PRS-stringent 0.7013776 0.0022866833   100
## 45  300 in all  laplace    0.8    simple  logit-simple 0.8675637 0.0010476466   100
## 46  300 in all  laplace    0.8    simple       PRS-all 0.5775197 0.0020168774   100
## 47  300 in all  laplace    0.8    simple       PRS-max 0.8263028 0.0018739564   100
## 48  300 in all  laplace    0.8    simple PRS-stringent 0.7975410 0.0020997992   100
## 49 3000 in all gaussian    0.5    simple  logit-simple 0.5402287 0.0019715932   100
## 50 3000 in all gaussian    0.5    simple       PRS-all 0.5471109 0.0019459643   100
## 51 3000 in all gaussian    0.5    simple       PRS-max 0.5640415 0.0014831043   100
## 52 3000 in all gaussian    0.5    simple PRS-stringent 0.5011300 0.0004978461   100
## 53 3000 in all gaussian    0.8    simple  logit-simple 0.5930936 0.0017426321   100
## 54 3000 in all gaussian    0.8    simple       PRS-all 0.5815471 0.0018698540   100
## 55 3000 in all gaussian    0.8    simple       PRS-max 0.6009236 0.0016823122   100
## 56 3000 in all gaussian    0.8    simple PRS-stringent 0.5047278 0.0013393899   100
## 57 3000 in all  laplace    0.5    simple  logit-simple 0.5667637 0.0022191897   100
## 58 3000 in all  laplace    0.5    simple       PRS-all 0.5546344 0.0019575145   100
## 59 3000 in all  laplace    0.5    simple       PRS-max 0.5772290 0.0015595892   100
## 60 3000 in all  laplace    0.5    simple PRS-stringent 0.5126266 0.0019870041   100
## 61 3000 in all  laplace    0.8    simple  logit-simple 0.6425784 0.0021110894   100
## 62 3000 in all  laplace    0.8    simple       PRS-all 0.5756465 0.0019220667   100
## 63 3000 in all  laplace    0.8    simple       PRS-max 0.6249136 0.0018907643   100
## 64 3000 in all  laplace    0.8    simple PRS-stringent 0.5498968 0.0028053676   100
results3.summary %>%
  filter(method %in% c("logit-simple", "PRS-max")) %>%
  barplot_causal_one(h2 = 0.8)

ggsave("figures/main-AUC-logit.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(grepl("PRS", method)) %>%
  barplot_causal_one(h2 = 0.8)

ggsave("figures/main-AUC-PRS.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(method %in% c("logit-simple", "PRS-max")) %>%
  barplot_causal_one(h2 = 0.5)

ggsave("figures/supp-AUC-logit.pdf", scale = 1/90, width = 844, height = 872)
results3.summary %>%
  filter(grepl("PRS", method)) %>%
  barplot_causal_one(h2 = 0.5)

ggsave("figures/supp-AUC-PRS.pdf", scale = 1/90, width = 844, height = 872)

6000 in training & only chromosome 6

results4 <- list.files("results4", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results4 %>%
  group_by_at(c(vars(starts_with("par")), "method")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 64 x 8
## # Groups:   par.causal, par.dist, par.h2, par.model [?]
##     par.causal par.dist par.h2 par.model        method  AUC_mean     AUC_boot     N
##         <fctr>    <chr>  <dbl>     <chr>         <chr>     <dbl>        <dbl> <int>
##  1   30 in HLA gaussian    0.5    simple  logit-simple 0.8273761 0.0014620812   100
##  2   30 in HLA gaussian    0.5    simple       PRS-all 0.7225191 0.0025004515   100
##  3   30 in HLA gaussian    0.5    simple       PRS-max 0.7594796 0.0020799680   100
##  4   30 in HLA gaussian    0.5    simple PRS-stringent 0.7479693 0.0022350866   100
##  5   30 in HLA gaussian    0.8    simple  logit-simple 0.9304637 0.0007440294   100
##  6   30 in HLA gaussian    0.8    simple       PRS-all 0.7930617 0.0026838690   100
##  7   30 in HLA gaussian    0.8    simple       PRS-max 0.8357841 0.0023880606   100
##  8   30 in HLA gaussian    0.8    simple PRS-stringent 0.8170666 0.0023255642   100
##  9   30 in HLA  laplace    0.5    simple  logit-simple 0.8259939 0.0015731375   100
## 10   30 in HLA  laplace    0.5    simple       PRS-all 0.7192382 0.0026644403   100
## 11   30 in HLA  laplace    0.5    simple       PRS-max 0.7649946 0.0022730789   100
## 12   30 in HLA  laplace    0.5    simple PRS-stringent 0.7475525 0.0024910676   100
## 13   30 in HLA  laplace    0.8    simple  logit-simple 0.9308943 0.0009296591   100
## 14   30 in HLA  laplace    0.8    simple       PRS-all 0.7958780 0.0025021641   100
## 15   30 in HLA  laplace    0.8    simple       PRS-max 0.8411322 0.0024704697   100
## 16   30 in HLA  laplace    0.8    simple PRS-stringent 0.8192751 0.0024441280   100
## 17   30 in all gaussian    0.5    simple  logit-simple 0.8293349 0.0013115125   100
## 18   30 in all gaussian    0.5    simple       PRS-all 0.6674592 0.0021467807   100
## 19   30 in all gaussian    0.5    simple       PRS-max 0.8006913 0.0018846280   100
## 20   30 in all gaussian    0.5    simple PRS-stringent 0.7871514 0.0024980039   100
## 21   30 in all gaussian    0.8    simple  logit-simple 0.9334058 0.0008277494   100
## 22   30 in all gaussian    0.8    simple       PRS-all 0.7423832 0.0019460199   100
## 23   30 in all gaussian    0.8    simple       PRS-max 0.8902233 0.0020850556   100
## 24   30 in all gaussian    0.8    simple PRS-stringent 0.8712800 0.0033135415   100
## 25   30 in all  laplace    0.5    simple  logit-simple 0.8306959 0.0012557796   100
## 26   30 in all  laplace    0.5    simple       PRS-all 0.6702213 0.0018992784   100
## 27   30 in all  laplace    0.5    simple       PRS-max 0.8017617 0.0019091474   100
## 28   30 in all  laplace    0.5    simple PRS-stringent 0.7861851 0.0026937531   100
## 29   30 in all  laplace    0.8    simple  logit-simple 0.9349700 0.0009115446   100
## 30   30 in all  laplace    0.8    simple       PRS-all 0.7473191 0.0019623040   100
## 31   30 in all  laplace    0.8    simple       PRS-max 0.8890306 0.0024225731   100
## 32   30 in all  laplace    0.8    simple PRS-stringent 0.8742507 0.0028162045   100
## 33  300 in all gaussian    0.5    simple  logit-simple 0.7641844 0.0014809940   100
## 34  300 in all gaussian    0.5    simple       PRS-all 0.6651117 0.0018823434   100
## 35  300 in all gaussian    0.5    simple       PRS-max 0.7134166 0.0025395533   100
## 36  300 in all gaussian    0.5    simple PRS-stringent 0.6107265 0.0030909571   100
## 37  300 in all gaussian    0.8    simple  logit-simple 0.8871248 0.0009534030   100
## 38  300 in all gaussian    0.8    simple       PRS-all 0.7362195 0.0018224395   100
## 39  300 in all gaussian    0.8    simple       PRS-max 0.7865674 0.0035241232   100
## 40  300 in all gaussian    0.8    simple PRS-stringent 0.7003632 0.0026873676   100
## 41  300 in all  laplace    0.5    simple  logit-simple 0.7823657 0.0015673363   100
## 42  300 in all  laplace    0.5    simple       PRS-all 0.6692717 0.0018069232   100
## 43  300 in all  laplace    0.5    simple       PRS-max 0.7316657 0.0023290090   100
## 44  300 in all  laplace    0.5    simple PRS-stringent 0.6790545 0.0022767822   100
## 45  300 in all  laplace    0.8    simple  logit-simple 0.8976960 0.0010699955   100
## 46  300 in all  laplace    0.8    simple       PRS-all 0.7406376 0.0021013495   100
## 47  300 in all  laplace    0.8    simple       PRS-max 0.8086806 0.0038578306   100
## 48  300 in all  laplace    0.8    simple PRS-stringent 0.7616079 0.0037741117   100
## 49 3000 in all gaussian    0.5    simple  logit-simple 0.6753110 0.0018486561   100
## 50 3000 in all gaussian    0.5    simple       PRS-all 0.6647694 0.0017842412   100
## 51 3000 in all gaussian    0.5    simple       PRS-max 0.6691055 0.0017497866   100
## 52 3000 in all gaussian    0.5    simple PRS-stringent 0.5084379 0.0020330382   100
## 53 3000 in all gaussian    0.8    simple  logit-simple 0.7773676 0.0015060634   100
## 54 3000 in all gaussian    0.8    simple       PRS-all 0.7347811 0.0017896883   100
## 55 3000 in all gaussian    0.8    simple       PRS-max 0.7376926 0.0017822453   100
## 56 3000 in all gaussian    0.8    simple PRS-stringent 0.5190131 0.0031704751   100
## 57 3000 in all  laplace    0.5    simple  logit-simple 0.6892420 0.0016100522   100
## 58 3000 in all  laplace    0.5    simple       PRS-all 0.6648594 0.0017653842   100
## 59 3000 in all  laplace    0.5    simple       PRS-max 0.6716360 0.0018882388   100
## 60 3000 in all  laplace    0.5    simple PRS-stringent 0.5133627 0.0024438245   100
## 61 3000 in all  laplace    0.8    simple  logit-simple 0.7951309 0.0014764113   100
## 62 3000 in all  laplace    0.8    simple       PRS-all 0.7339140 0.0016852667   100
## 63 3000 in all  laplace    0.8    simple       PRS-max 0.7391223 0.0017690837   100
## 64 3000 in all  laplace    0.8    simple PRS-stringent 0.5474388 0.0038433034   100
results34 <- rbind(
  cbind(simu = "all", results3),
  cbind(simu = "chr6", results4)
) %>%
  as_tibble()
results34 %>%
  myggplot() +
  geom_hline(yintercept = 0.5, linetype = 2) +
  geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
             data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
  geom_boxplot(aes(method, AUC, fill = simu, color = simu), alpha = 0.3) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  facet_grid(par.model ~ par.causal) +
  facet_grid(par.h2 + par.dist ~ par.causal) +
  scale_fill_brewer(type = "qual", palette = 2) +
  scale_color_brewer(type = "qual", palette = 2) + 
  labs(x = "Method")

ggsave("figures/supp-AUC-chr6.pdf", scale = 1/90, width = 1153, height = 908)

Varying training size & all shromosomes

results5 <- list.files("results5", full.names = TRUE) %>%
  map_dfr(~readRDS(.x)) %>%
  format_results()

results5.summary <- results5 %>%
  group_by_at(c(vars(starts_with("par")), "method", "n.train")) %>%
  summarise(AUC_mean = mean(AUC), AUC_boot = boot(AUC), N = n()) %>%
  print(n = Inf)
## # A tibble: 80 x 9
## # Groups:   par.causal, par.dist, par.h2, par.model, method [?]
##    par.causal par.dist par.h2 par.model        method n.train  AUC_mean     AUC_boot     N
##        <fctr>    <chr>  <dbl>     <chr>         <chr>   <dbl>     <dbl>        <dbl> <int>
##  1 300 in all gaussian    0.5    simple  logit-simple    1000 0.5239542 0.0018487410   100
##  2 300 in all gaussian    0.5    simple  logit-simple    2000 0.5740147 0.0018524243   100
##  3 300 in all gaussian    0.5    simple  logit-simple    3000 0.6238913 0.0018324091   100
##  4 300 in all gaussian    0.5    simple  logit-simple    4000 0.6634131 0.0016484439   100
##  5 300 in all gaussian    0.5    simple  logit-simple    5000 0.6918836 0.0016610251   100
##  6 300 in all gaussian    0.5    simple       PRS-all    1000 0.5202559 0.0008730158   100
##  7 300 in all gaussian    0.5    simple       PRS-all    2000 0.5299842 0.0009582303   100
##  8 300 in all gaussian    0.5    simple       PRS-all    3000 0.5357946 0.0009413387   100
##  9 300 in all gaussian    0.5    simple       PRS-all    4000 0.5427830 0.0012212952   100
## 10 300 in all gaussian    0.5    simple       PRS-all    5000 0.5466338 0.0016049855   100
## 11 300 in all gaussian    0.5    simple       PRS-max    1000 0.5358167 0.0012525177   100
## 12 300 in all gaussian    0.5    simple       PRS-max    2000 0.5733343 0.0017747360   100
## 13 300 in all gaussian    0.5    simple       PRS-max    3000 0.6155515 0.0015590827   100
## 14 300 in all gaussian    0.5    simple       PRS-max    4000 0.6490288 0.0017619914   100
## 15 300 in all gaussian    0.5    simple       PRS-max    5000 0.6747166 0.0017585660   100
## 16 300 in all gaussian    0.5    simple PRS-stringent    1000 0.5030269 0.0011749320   100
## 17 300 in all gaussian    0.5    simple PRS-stringent    2000 0.5135454 0.0022841492   100
## 18 300 in all gaussian    0.5    simple PRS-stringent    3000 0.5478168 0.0031220629   100
## 19 300 in all gaussian    0.5    simple PRS-stringent    4000 0.5872800 0.0027288705   100
## 20 300 in all gaussian    0.5    simple PRS-stringent    5000 0.6137216 0.0023790399   100
## 21 300 in all gaussian    0.8    simple  logit-simple    1000 0.5695833 0.0025027783   100
## 22 300 in all gaussian    0.8    simple  logit-simple    2000 0.6779019 0.0019583988   100
## 23 300 in all gaussian    0.8    simple  logit-simple    3000 0.7439188 0.0017396481   100
## 24 300 in all gaussian    0.8    simple  logit-simple    4000 0.7939789 0.0013449864   100
## 25 300 in all gaussian    0.8    simple  logit-simple    5000 0.8265081 0.0012032889   100
## 26 300 in all gaussian    0.8    simple       PRS-all    1000 0.5337083 0.0007818395   100
## 27 300 in all gaussian    0.8    simple       PRS-all    2000 0.5470539 0.0008657849   100
## 28 300 in all gaussian    0.8    simple       PRS-all    3000 0.5557531 0.0010333219   100
## 29 300 in all gaussian    0.8    simple       PRS-all    4000 0.5652703 0.0009892562   100
## 30 300 in all gaussian    0.8    simple       PRS-all    5000 0.5750104 0.0011667905   100
## 31 300 in all gaussian    0.8    simple       PRS-max    1000 0.5712264 0.0022165677   100
## 32 300 in all gaussian    0.8    simple       PRS-max    2000 0.6551196 0.0019734897   100
## 33 300 in all gaussian    0.8    simple       PRS-max    3000 0.7100872 0.0018565322   100
## 34 300 in all gaussian    0.8    simple       PRS-max    4000 0.7560750 0.0017438160   100
## 35 300 in all gaussian    0.8    simple       PRS-max    5000 0.7831453 0.0016761581   100
## 36 300 in all gaussian    0.8    simple PRS-stringent    1000 0.5083682 0.0021308998   100
## 37 300 in all gaussian    0.8    simple PRS-stringent    2000 0.5714397 0.0038362939   100
## 38 300 in all gaussian    0.8    simple PRS-stringent    3000 0.6321122 0.0028882367   100
## 39 300 in all gaussian    0.8    simple PRS-stringent    4000 0.6835617 0.0025293811   100
## 40 300 in all gaussian    0.8    simple PRS-stringent    5000 0.7215995 0.0018651271   100
## 41 300 in all  laplace    0.5    simple  logit-simple    1000 0.5631811 0.0031323040   100
## 42 300 in all  laplace    0.5    simple  logit-simple    2000 0.6443865 0.0027804169   100
## 43 300 in all  laplace    0.5    simple  logit-simple    3000 0.6854414 0.0020383729   100
## 44 300 in all  laplace    0.5    simple  logit-simple    4000 0.7117366 0.0013498513   100
## 45 300 in all  laplace    0.5    simple  logit-simple    5000 0.7308034 0.0015822828   100
## 46 300 in all  laplace    0.5    simple       PRS-all    1000 0.5229728 0.0007351662   100
## 47 300 in all  laplace    0.5    simple       PRS-all    2000 0.5291398 0.0009239284   100
## 48 300 in all  laplace    0.5    simple       PRS-all    3000 0.5349783 0.0009471727   100
## 49 300 in all  laplace    0.5    simple       PRS-all    4000 0.5414322 0.0010923076   100
## 50 300 in all  laplace    0.5    simple       PRS-all    5000 0.5441681 0.0014981870   100
## 51 300 in all  laplace    0.5    simple       PRS-max    1000 0.5685933 0.0025435150   100
## 52 300 in all  laplace    0.5    simple       PRS-max    2000 0.6391377 0.0026843631   100
## 53 300 in all  laplace    0.5    simple       PRS-max    3000 0.6753906 0.0021497633   100
## 54 300 in all  laplace    0.5    simple       PRS-max    4000 0.6975217 0.0015837601   100
## 55 300 in all  laplace    0.5    simple       PRS-max    5000 0.7147227 0.0016660157   100
## 56 300 in all  laplace    0.5    simple PRS-stringent    1000 0.5185771 0.0035605866   100
## 57 300 in all  laplace    0.5    simple PRS-stringent    2000 0.5917252 0.0046526611   100
## 58 300 in all  laplace    0.5    simple PRS-stringent    3000 0.6396298 0.0032020620   100
## 59 300 in all  laplace    0.5    simple PRS-stringent    4000 0.6620125 0.0023958632   100
## 60 300 in all  laplace    0.5    simple PRS-stringent    5000 0.6821053 0.0023521766   100
## 61 300 in all  laplace    0.8    simple  logit-simple    1000 0.6473914 0.0036782226   100
## 62 300 in all  laplace    0.8    simple  logit-simple    2000 0.7476187 0.0022007375   100
## 63 300 in all  laplace    0.8    simple  logit-simple    3000 0.8027560 0.0013400125   100
## 64 300 in all  laplace    0.8    simple  logit-simple    4000 0.8337768 0.0012542806   100
## 65 300 in all  laplace    0.8    simple  logit-simple    5000 0.8513614 0.0010936134   100
## 66 300 in all  laplace    0.8    simple       PRS-all    1000 0.5327867 0.0008174385   100
## 67 300 in all  laplace    0.8    simple       PRS-all    2000 0.5456226 0.0009357268   100
## 68 300 in all  laplace    0.8    simple       PRS-all    3000 0.5576734 0.0009407684   100
## 69 300 in all  laplace    0.8    simple       PRS-all    4000 0.5658105 0.0010970442   100
## 70 300 in all  laplace    0.8    simple       PRS-all    5000 0.5742621 0.0015383594   100
## 71 300 in all  laplace    0.8    simple       PRS-max    1000 0.6393342 0.0037949058   100
## 72 300 in all  laplace    0.8    simple       PRS-max    2000 0.7250039 0.0023665223   100
## 73 300 in all  laplace    0.8    simple       PRS-max    3000 0.7676317 0.0016824344   100
## 74 300 in all  laplace    0.8    simple       PRS-max    4000 0.7966704 0.0014806706   100
## 75 300 in all  laplace    0.8    simple       PRS-max    5000 0.8088163 0.0020241037   100
## 76 300 in all  laplace    0.8    simple PRS-stringent    1000 0.5686777 0.0057386259   100
## 77 300 in all  laplace    0.8    simple PRS-stringent    2000 0.6726454 0.0040715712   100
## 78 300 in all  laplace    0.8    simple PRS-stringent    3000 0.7277399 0.0026315496   100
## 79 300 in all  laplace    0.8    simple PRS-stringent    4000 0.7596770 0.0020671814   100
## 80 300 in all  laplace    0.8    simple PRS-stringent    5000 0.7785163 0.0023232081   100
results35.summary <- results3.summary %>%
  filter(par.causal == "300 in all") %>%
  cbind.data.frame(n.train = 6000) %>%
  bind_rows(results5.summary)
myggplot(results35.summary, aes(n.train, AUC_mean, color = method, linetype = method)) +
  geom_hline(yintercept = 0.5, linetype = 2) +
  geom_hline(aes(yintercept = auc_max), linetype = 3, color = "blue",
             data = data.frame(par.h2 = c(0.5, 0.8), auc_max = c(0.84, 0.94))) +
  geom_line(size = 1.5) +
  geom_errorbar(aes(ymin = AUC_mean - 2 * AUC_boot, 
                    ymax = AUC_mean + 2 * AUC_boot), 
                size = 1.5, width = 0) +
  facet_grid(par.h2 ~ par.dist) +
  scale_x_continuous(breaks = 1:6 * 1000, minor_breaks = NULL) + 
  scale_y_continuous(minor_breaks = 0:20 / 20) +
  scale_color_manual(values = methods.color) +
  labs(x = "Size of the training set", y = "Mean of 100 AUCs", 
       color = "Method", linetype = "Method") +
  theme(legend.key.width = unit(3, "line"))

ggsave("figures/main-AUC-ntrain.pdf", scale = 1/90, width = 1050, height = 800)